<!-- 标签页组件 -->
<template>
  <div class="tags">
    <el-tabs
      v-model="editableTabsValue"
      type="card"
      closable
      @tab-remove="removeTab"
      @tab-click="clickTab"
    >
      <el-tab-pane
        v-for="item in editableTabs"
        :key="item.name"
        :label="item.title"
        :name="item.name"
      >
        {{ item.content }}
      </el-tab-pane>
    </el-tabs>
  </div>
</template>

<script>
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
//例如：import 《组件名称》 from '《组件路径》';

export default {
  //import引入的组件需要注入到对象中才能使用
  name: "tags",
  components: {},
  data() {
    //这里存放数据
    return {
      
    };
  },
  //监听属性 类似于data概念
  computed: {
    // 标签页集合
    editableTabs: {
      get() {
        return this.$store.state.menus.editableTabs;
      },
      set(val) {
        this.$store.state.menus.editableTabs = val;
      },
    },
    // 当前选中的tabs标签页
    editableTabsValue: {
      get() {
        return this.$store.state.menus.editableTabsValue;
      },
      set(val) {
        this.$store.state.menus.editableTabsValue = val;
      },
    },
  },
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    //删除tab
    //删除tab标签页
        removeTab(targetName) {
          // console.log("目标名"+targetName);
            //获取tabs集合
            let tabs = this.editableTabs;
            //获取当前tab名称
            let activeName = this.editableTabsValue;
            // console.log("当前名"+activeName);
            // 首页不能删除                
            if (targetName === "Index") {
                return
            }
            //如果当前选中tab名称与目标tab名称一致
            if (activeName === targetName) {
                //循环tabs集合
                tabs.forEach((tab, index) => {
                    //如果tabs集合中的名称与目标tab的名称一致
                    if (tab.name === targetName) {
                        let nextTab = tabs[index + 1] || tabs[index - 1];
                        if (nextTab) {
                            activeName = nextTab.name;
                        }
                    }
                });
            }

            this.editableTabsValue = activeName;
            this.editableTabs = tabs.filter((tab) => tab.name !== targetName);
            //删除后跳转
            this.$router.push({name: activeName})
        },
    // 点击tabs标签页跳转到指定name的路由
    clickTab(target){
      this.$router.push({name:target.name})
    }
  },
  //生命周期 - 创建完成（可以访问当前this实例）
  created() {},
  //生命周期 - 挂载完成（可以访问DOM元素）
  mounted() {},
  beforeCreate() {}, //生命周期 - 创建之前
  beforeMount() {}, //生命周期 - 挂载之前
  beforeUpdate() {}, //生命周期 - 更新之前
  updated() {}, //生命周期 - 更新之后
  //3.0版本弃用 beforeDestroy() {}, //生命周期 - 销毁之前
  //3.0版本弃用 destroyed() {}, //生命周期 - 销毁完成
  beforeUnmount() {}, //生命周期 - 销毁之前
  unmounted() {}, //生命周期 - 销毁完成
  activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发
};
</script>
<style scoped>
</style>